CMU-CS-85-174 Adaptability and Portability of Symbolic Debuggers
نویسنده
چکیده
The design and implementation of symbolic debuggers for complex software systems is not a well understood area. This is reflected in the inadequate functionality of existing debuggers, many of which are seldomly used. For example, 30% of all programmers asked in a questionnaire (which was distributed as part of this thesis work) do not use a debugger at all or only very in frequently [Bruegge, 1984]. Yet debugging tools are needed: Many software systems are produced by the cooperative effort of many designers and programmers, sometimes over several years, resulting in products that inevitably contain bugs. There are three problems in the implementation and the use of symbolic debuggers. First, many programmers do not use debuggers because they are not available. Symbolic debuggers are costly to develop from scratch and the know-how to move an existing debugger in a cost-effective way from one machine to another is not available. To make debuggers more available, it must be possible to move them easily from existing to new machines. That is, they should be portable. Second, even if a symbolic debugger is available it is often quite inflexible to the different requirements of the various users or application programs. The functionality is wired into the code and the user is not able to tailor the debugger to the needs of the specific application to be debugged. Moreover, many debuggers are designed and implemented to operate only in exactly one programming environment. This is different from editors such as F._ACS [Gosling, 1982] where users are able to tailor the command language to their needs. A debugger should provide actually even more flexibility than a text editor: A debugger should be able to adapt to a variety of users and applications and environments. The third problem is that many existing symbolic debuggers depend heavily on the functionality made available by other components of the environment. However, these components are usually not designed with debugging in mind. As a result of this mismatch many debuggers cannot offer the functionality needed by programmers to debug their programs. This dissertation investigates these three problems and suggests how to overcome them. My thesis is that debuggers can be built more cost effectively and made more useful in a programming environment if they are portable and adaptable. The scientific contribution of this dissertation is the provision of a paradigm for building and using a debugger that is portable and adaptable. I define a language called PATrtRULESthat can be used as the basic building block of such a debugger. I demonstrate how PATIIRULEScan be used to implement the functionality of single process as well as multiple process debuggers. The language can also be used to adapt the debugger to sophisticated debugging situations not provided as built-in commands. I derive several requirements for builders of compilers, operating systems and hardware architectures to make PATtlRUI.ESimplementable. A prototype OfPATttRUI.EShas been implemented in KRAUT [Bruegge 1983b], a remote symbolic debugger for Perq Pascal [PQS, 1984] running under the Accent operating system [Rashid, 1981] as part of the SPICEproject [Ball, 1982]. The goal of the prototype implementation was to demonstrate the validity of key aspects of the approach and to observe the behavior of users during actual debugging situations. Altogether the debugging behavior of a population of 51 users was monitored in over 4000 debugging sessions spanning a period of more than two years. Based on these user studies I outline an implementation strategy for a portabie debugger and provide a bootstrap procedure to move a portable debugger from one environment to another.
منابع مشابه
Java as an Intermediate Language
We present our experiences in using Java as an intermediate language for the high level program ming language Nesl First we describe the design and implementation of a system for translating Vcode the current intermediate language used by Nesl into Java Second we evaluate this translation by comparing the performance of the original Vcode implementation with several vari ants of the Java implem...
متن کاملDifferential Invariants and Symbolic Integration for Distributed Hybrid Systems (CMU-CS-12-107)
We present a formal proof of collision avoidance for a simple distributed hybrid system consisting of an arbitrary finite number of cars on a one dimensional road. Our cars take actions independently from one another and without synchronization, thus behaving in a truly distributed manner. We allow cars to enter and exit the road. For the continuous dynamics, we show how differential invariants...
متن کاملDesigning a Parallel Debugger for Portability
The growing variety of parallel computers has made it difficult to design portable tools for parallel programs. This paper shows how an interactive visualization tool can be designed to work with a variety of parallel machines. The design includes a strategy for adapting to differences in the interfaces and capabilities of the low-level debuggers supplied by hardware vendors. Our tool uses thes...
متن کاملHow C differs from Java for Symbolic Program Execution
Verificationsystems, test generators, debuggers, and compilers offten implement a symbolic execution framework. We have identified a small set of features in ANSI C, MISRA C, and C0 that may require special treatment or special considerations when migrating a symbolic execution framework for Java to a framework for a C dialect. For some of these language features we have developed symbolic exec...
متن کاملDiversity or Difference? New Research Supports the Case for a Cultural Perspective on Women in Computing
Gender difference approaches to the participation of women in computing have not provided adequate explanations for women’s declining interest in computer science (CS) and related technical fields. Indeed, the search for gender differences can work against diversity which we define as a cross-gender spectrum of characteristics, interests, abilities, experiences, beliefs and identities. Our ongo...
متن کامل